home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume7 / nethack3 / patch4i < prev    next >
Encoding:
Internet Message Format  |  1989-10-02  |  44.4 KB

  1. Path: uunet!zephyr.ens.tek.com!tekgen!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v08i045:  NetHack3 -  display oriented dungeons & dragons (Ver. 3.0), Patch4i
  5. Message-ID: <4635@tekred.CNA.TEK.COM>
  6. Date: 29 Sep 89 21:14:31 GMT
  7. Sender: nobody@tekred.CNA.TEK.COM
  8. Lines: 1127
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
  12. Posting-number: Volume 8, Issue 45
  13. Archive-name: NetHack3/Patch4i
  14. Patch-To: NetHack3: Volume 7, Issue 56-93
  15.  
  16. #! /bin/sh
  17. # This is a shell archive.  Remove anything before this line, then unpack
  18. # it by saving it into a file and typing "sh file".  To overwrite existing
  19. # files, type "sh file -c".  You can also feed this as standard input via
  20. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  21. # will see the following message at the end:
  22. #        "End of archive 9 (of 11)."
  23. # Contents:  UPDATE4 do_patch4.sh others/Makefile.pc src/objects.c
  24. # Wrapped by billr@saab on Fri Sep 29 13:57:17 1989
  25. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  26. if test -f 'UPDATE4' -a "${1}" != "-c" ; then 
  27.   echo shar: Will not clobber existing file \"'UPDATE4'\"
  28. else
  29. echo shar: Extracting \"'UPDATE4'\" \(1550 characters\)
  30. sed "s/^X//" >'UPDATE4' <<'END_OF_FILE'
  31. X-------------
  32. XUPDATE4
  33. X-------------
  34. XNOTICE:  The changes which were made in the code make all save and bones 
  35. Xfiles absolete.  Once Patch 4 is applied, all the old save and bones files
  36. Xmust be thrown out.
  37. X
  38. X
  39. XHere is a list of the main changes:
  40. X
  41. XObject and monster types got a new field specifying their color, so things 
  42. Xcan now appear in "living color" instead having one color for all monsters,
  43. Xone for all weapons, and so on.
  44. X
  45. XReferences to monsters and objects on the floor were moved to new structures,
  46. Xwhich support the better color handling as well as provide yet faster access.
  47. X
  48. XDavid Gentzel provided a port for VMS.  Although extensively tested by
  49. XDavid and others, and found to be sound, it probably needs further
  50. Xrefinements.  We are appealing to those of you who know VMS (none of us
  51. Xdoes..) to join David in his efforts to refine the VMS code.
  52. X
  53. XMuch of the *main.c code was moved to a new file, to avoid having to update
  54. Xthat common code in three different *main.c files.
  55. X
  56. XVARARG handling was ifdef'd to satisfy ANSI compilers.
  57. X
  58. XAlmost all grey creatures now join the other gray creatures.
  59. X
  60. XMonsters will no longer be created in the same room as the player, and should
  61. Xno longer want to end up in the SE corner of the dungeon.
  62. X
  63. XLycanthropy is now considered a "major problem" (allowing for appeal to the
  64. Xgods through prayer), some artifacts are associated with particular character
  65. Xclasses, various oddities involving statues, digging, iron balls, and 
  66. Xthrowing have been removed, and many other bugs, both major and minor, were
  67. Xfixed.
  68. X
  69. END_OF_FILE
  70. if test 1550 -ne `wc -c <'UPDATE4'`; then
  71.     echo shar: \"'UPDATE4'\" unpacked with wrong size!
  72. fi
  73. # end of 'UPDATE4'
  74. fi
  75. if test -f 'do_patch4.sh' -a "${1}" != "-c" ; then 
  76.   echo shar: Will not clobber existing file \"'do_patch4.sh'\"
  77. else
  78. echo shar: Extracting \"'do_patch4.sh'\" \(739 characters\)
  79. sed "s/^X//" >'do_patch4.sh' <<'END_OF_FILE'
  80. X#! /bin/sh
  81. X# script to call patch to apply diff files
  82. X# make sure all of the patch files (and this file) are in your top level
  83. X# NetHack directory
  84. X#
  85. Xecho "applying patch4a"
  86. Xpatch -p <patches04a
  87. Xecho "applying patch4b"
  88. Xpatch -p <patches04b
  89. Xecho "applying patch4c"
  90. Xpatch -p <patches04c
  91. Xecho "applying patch4d"
  92. Xpatch -p <patches04d
  93. Xecho "applying patch4e"
  94. Xpatch -p <patches04e
  95. Xecho "applying patch4f"
  96. Xpatch -p <patches04f
  97. Xecho "applying patch4g"
  98. Xpatch -p <patches04g
  99. Xecho "applying patch4h"
  100. Xpatch -p <patches04h
  101. Xecho "building monst.c"
  102. Xif test -f 'src/monst.c'
  103. Xthen
  104. X  mv -f src/monst.c src/monst.c.orig
  105. Xfi
  106. Xcat src/monst.c1 src/monst.c2 > src/monst.c
  107. Xrm src/monst.c1 src/monst.c2
  108. Xrm -f vms/*.orig
  109. Xecho "all patches applied, check for rejects"
  110. END_OF_FILE
  111. if test 739 -ne `wc -c <'do_patch4.sh'`; then
  112.     echo shar: \"'do_patch4.sh'\" unpacked with wrong size!
  113. fi
  114. chmod +x 'do_patch4.sh'
  115. # end of 'do_patch4.sh'
  116. fi
  117. if test -f 'others/Makefile.pc' -a "${1}" != "-c" ; then 
  118.   mv -f others/Makefile.pc others/Makefile.pc.orig
  119. fi
  120. echo shar: Extracting \"'others/Makefile.pc'\" \(7987 characters\)
  121. sed "s/^X//" >'others/Makefile.pc' <<'END_OF_FILE'
  122. X#    SCCS Id: @(#)Makefile.pc    3.0    89/07/07
  123. X#    PC NetHack 3.0 Makefile for Microsoft(tm) "C" 4.0 or better.
  124. X#
  125. X# Large memory model, register bug, remove stack probes:
  126. XCC    = msc
  127. XLINK    = link
  128. XMODEL    = L
  129. X
  130. X# Directories (makedefs hardcodes these, don't change them)
  131. XINCL    = ..\include
  132. XAUX    = ..\auxil
  133. XSRC    = ..\src
  134. X
  135. XCFLAGS    = -A$(MODEL) -DLINT_ARGS -Ot -Oa -Gs -Gt28 -I$(INCL)
  136. XLFLAGS    = -exe -noig -stack:0x0aff -seg:512
  137. XTARG    = pc
  138. X
  139. X.c.o:
  140. X    $(CC) $(CFLAGS) $*.c, o\$*.o;
  141. X
  142. X# Optional high-quality BSD random number generation routines (see pcconf.h).
  143. X# Set to nothing if not used.
  144. XRANDOM = o\random.obj
  145. X
  146. X# For NDMAKE, to handle the .o suffix.
  147. X.SUFFIXES: .exe .o .c .y .l
  148. X
  149. X# The game name
  150. XGAME= nethack
  151. X
  152. X# The game directory
  153. XGAMEDIR = \games\$(GAME)
  154. X
  155. X# The game filename
  156. XGAMEFILE = $(GAMEDIR)\$(GAME).exe
  157. X
  158. X# object files for makedefs
  159. XMAKEOBJS = o\makedefs.o o\alloc.o o\monst.o o\objects.o o\panic.o
  160. X
  161. X# object files for special levels compiler
  162. XSPLEVOBJS = o\lev_comp.o o\lev_lex.o o\lev_main.o o\alloc.o o\monst.o o\objects.o o\panic.o
  163. X
  164. X# nothing below this line should have to be changed
  165. X#
  166. X# other things that have to be reconfigured are in config.h,
  167. X# {unixconf.h, pcconf.h, tosconf.h}, and possibly system.h
  168. X
  169. XVOBJ =    o\allmain.o o\alloc.o o\apply.o o\artifact.o o\attrib.o o\bones.o \
  170. X    o\cmd.o o\dbridge.o o\decl.o o\demon.o o\do.o o\do_name.o o\do_wear.o \
  171. X    o\dog.o o\dogmove.o o\dokick.o o\dothrow.o o\eat.o o\end.o o\engrave.o \
  172. X    o\exper.o o\extralev.o o\fountain.o o\getline.o o\hack.o o\invent.o \
  173. X    o\lock.o o\mail.o o\main.o o\makemon.o o\mcastu.o o\mhitm.o o\mhitu.o \
  174. X    o\mklev.o o\mkmaze.o o\mkobj.o o\mkroom.o o\mon.o o\mondata.o \
  175. X    o\msdos.o o\monmove.o o\monst.o o\mthrowu.o o\music.o o\o_init.o \
  176. X    o\objects.o o\objnam.o o\options.o o\pager.o o\pickup.o o\polyself.o \
  177. X    o\potion.o o\pray.o o\pri.o o\priest.o o\prisym.o $(RANDOM) o\read.o \
  178. X    o\restore.o o\rip.o o\rnd.o o\rumors.o o\save.o o\search.o o\shk.o \
  179. X    o\shknam.o o\sit.o o\sounds.o o\sp_lev.o o\spell.o o\steal.o \
  180. X    o\termcap.o o\timeout.o o\topl.o o\topten.o o\track.o o\trap.o \
  181. X    o\tty.o o\u_init.o o\uhitm.o o\unix.o o\vault.o o\weapon.o o\were.o \
  182. X    o\wield.o o\wizard.o o\worm.o o\worn.o o\write.o o\zap.o
  183. XHOBJ =    $(VOBJ) o\version.o
  184. X
  185. XPCCONF_H   = $(INCL)\$(TARG)conf.h $(INCL)\msdos.h $(INCL)\system.h \
  186. X         $(INCL)\extern.h 
  187. XGLOBAL_H   = $(INCL)\global.h $(INCL)\coord.h $(PCCONF_H)
  188. XCONFIG_H   = $(INCL)\config.h $(INCL)\tradstdc.h $(GLOBAL_H)
  189. XTRAP_H       = $(INCL)\trap.h
  190. XPERMONST_H = $(INCL)\permonst.h $(INCL)\monflag.h
  191. XYOU_H       = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \
  192. X         $(INCL)\monst.h $(INCL)\youprop.h
  193. XDECL_H       = $(INCL)\decl.h $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) \
  194. X         $(INCL)\onames.h $(INCL)\pm.h
  195. XHACK_H       = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \
  196. X         $(INCL)\objclass.h $(INCL)\gold.h $(INCL)\trap.h $(INCL)\flag.h \
  197. X         $(INCL)\rm.h
  198. X
  199. X# The main target
  200. X$(GAMEDIR)\$(GAME).exe: o $(HOBJ)
  201. X    .\linkit
  202. X#    $(LINK) $(HOBJ),nethack,nethack,ltermcap llibux $(LFLAGS) ;
  203. X
  204. X# NDMAKE automatically generates LINK response files, so you can
  205. X# uncomment the second line if you are using NDMAKE.
  206. X
  207. X$(GAME): $(GAMEDIR)\$(GAME).exe
  208. X$(GAME).exe: $(GAMEDIR)\$(GAME).exe
  209. X
  210. X.c.o:
  211. X    $(CC) $(CFLAGS) $*.c, o\$*.o ;
  212. X
  213. Xall:    o $(GAME) auxil
  214. X    @echo Done.
  215. X
  216. Xo:
  217. X    mkdir o
  218. X
  219. Xmakedefs.exe:    $(MAKEOBJS)
  220. X    $(LINK) $(LFLAGS) $(MAKEOBJS);
  221. X
  222. Xo\makedefs.o:  $(INCL)\config.h $(INCL)\permonst.h $(INCL)\objclass.h
  223. X
  224. Xlev_comp.exe:  $(SPLEVOBJS)
  225. X    $(LINK) $(LFLAGS) -o lev_comp $(SPLEVOBJS)
  226. X
  227. Xo\lev_comp.o:  $(HACK_H) $(INCL)\sp_lev.h
  228. Xo\lev_lex.o:  $(INCL)\lev_comp.h $(HACK_H) $(INCL)\sp_lev.h
  229. Xo\lev_main.o:  $(HACK_H) $(INCL)\sp_lev.h
  230. X
  231. X# If you have yacc or lex programs, and make any changes,
  232. X# add some .y.c and .l.c rules to your Make.ini.
  233. X
  234. Xlev_comp.c:  lev_comp.y
  235. Xlev_lex.c:  lev_comp.l
  236. X
  237. X#
  238. X#    The following include files depend on makedefs to be created.
  239. X#
  240. X#    date.h should be remade any time any of the source or include code
  241. X#    is modified.
  242. X#
  243. X$(INCL)\date.h:     $(VOBJ) makedefs.exe
  244. X    .\makedefs -v
  245. X
  246. X$(INCL)\trap.h:     makedefs.exe
  247. X    .\makedefs -t
  248. X
  249. X$(INCL)\onames.h:  makedefs.exe
  250. X    .\makedefs -o
  251. X
  252. X$(INCL)\pm.h:  makedefs.exe
  253. X    .\makedefs -p
  254. X
  255. Xdata:    $(AUX)\data.base makedefs.exe
  256. X    .\makedefs -d
  257. X
  258. Xrumors: $(AUX)\rumors.tru $(AUX)\rumors.fal makedefs.exe
  259. X    .\makedefs -r
  260. X
  261. X#
  262. X#    The following programs vary depending on what OS you are using.
  263. X#
  264. Xo\main.o:   $(HACK_H) $(TARG)main.c
  265. X    $(CC) $(CFLAGS) $(TARG)main.c, o\main.o ;
  266. X
  267. Xo\tty.o:   $(HACK_H) $(INCL)\func_tab.h $(TARG)tty.c
  268. X    $(CC) $(CFLAGS) $(TARG)tty.c, o\tty.o ;
  269. X
  270. Xo\unix.o:   $(HACK_H) $(TARG)unix.c
  271. X    $(CC) $(CFLAGS) $(TARG)unix.c, o\unix.o ;
  272. X
  273. X#
  274. X# Secondary targets
  275. X#
  276. X
  277. Xauxil:    spec_levs
  278. X    cd $(AUX)
  279. X    xcopy *. $(GAMEDIR)
  280. X
  281. Xspec_levs: $(AUX)\castle.des $(AUX)\endgame.des $(AUX)\tower.des
  282. X    lev_comp $(AUX)\castle.des
  283. X    lev_comp $(AUX)\endgame.des
  284. X    lev_comp $(AUX)\tower.des
  285. X    cd $(AUX)
  286. X    xcopy castle $(GAMEDIR)
  287. X    del castle
  288. X    xcopy endgame $(GAMEDIR)
  289. X    del endgame
  290. X    xcopy tower? $(GAMEDIR)
  291. X    del tower?
  292. X
  293. Xclean:
  294. X    del o\*.obj
  295. X    rmdir o
  296. X
  297. Xspotless: clean
  298. X    cd $(INCL)
  299. X    del date.h
  300. X    del onames.h
  301. X    del pm.h
  302. X    touch date.h onames.h pm.h
  303. X    cd $(SRC)
  304. X    del makedefs.exe
  305. X    if exist lev_comp.exe del lev_comp.exe
  306. X
  307. X#
  308. X# Other dependencies
  309. X#
  310. X
  311. X# GO AHEAD, DELETE THIS LINE
  312. X
  313. Xo\allmain.o:  $(HACK_H)
  314. Xo\alloc.o:  $(CONFIG_H)
  315. Xo\apply.o:  $(HACK_H) $(INCL)\edog.h
  316. Xo\artifact.o:  $(HACK_H) $(INCL)\artifact.h
  317. Xo\attrib.o:  $(HACK_H)
  318. Xo\bones.o:  $(HACK_H)
  319. Xo\cmd.o:  $(HACK_H) $(INCL)\func_tab.h
  320. Xo\dbridge.o: $(HACK_H)
  321. Xo\decl.o:  $(HACK_H)
  322. Xo\demon.o:  $(HACK_H)
  323. Xo\do.o:  $(HACK_H)
  324. Xo\do_name.o:  $(HACK_H)
  325. Xo\do_wear.o:  $(HACK_H)
  326. Xo\dog.o:  $(HACK_H) $(INCL)\edog.h
  327. Xo\dogmove.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
  328. Xo\dokick.o:  $(HACK_H)
  329. Xo\dothrow.o:  $(HACK_H)
  330. Xo\eat.o:  $(HACK_H)
  331. Xo\end.o:  $(HACK_H) $(INCL)\eshk.h
  332. Xo\engrave.o:  $(HACK_H)
  333. Xo\exper.o:  $(HACK_H)
  334. Xo\extralev.o:  $(HACK_H)
  335. Xo\fountain.o:  $(HACK_H)
  336. Xo\getline.o:  $(HACK_H) $(INCL)\func_tab.h
  337. Xo\hack.o:  $(HACK_H)
  338. Xo\invent.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
  339. Xo\ioctl.o:  $(HACK_H)
  340. Xo\lev_comp.o:  $(HACK_H) $(INCL)\sp_lev.h
  341. Xo\lock.o:  $(HACK_H)
  342. Xo\makemon.o:  $(HACK_H)
  343. Xo\mail.o:  $(HACK_H)
  344. Xo\mcastu.o:  $(HACK_H)
  345. Xo\mhitm.o:  $(HACK_H) $(INCL)\artifact.h
  346. Xo\mhitu.o:  $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
  347. Xo\mklev.o:  $(HACK_H)
  348. Xo\mkmaze.o:  $(HACK_H)
  349. Xo\mkobj.o:  $(HACK_H)
  350. Xo\mkroom.o:  $(HACK_H)
  351. Xo\mon.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
  352. Xo\mondata.o:  $(HACK_H) $(INCL)\eshk.h $(INCL)\epri.h
  353. Xo\monmove.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
  354. Xo\monst.o:  $(CONFIG_H) $(PERMONST_H) $(INCL)\eshk.h $(INCL)\vault.h $(INCL)\epri.h
  355. Xo\msdos.o:  $(HACK_H)
  356. Xo\mthrowu.o:  $(HACK_H)
  357. Xo\music.o:  $(HACK_H)
  358. Xo\o_init.o:  $(HACK_H) $(INCL)\onames.h
  359. Xo\objects.o:  $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h $(INCL)\prop.h
  360. Xo\objnam.o:  $(HACK_H)
  361. Xo\options.o:  $(HACK_H)
  362. Xo\pager.o:  $(HACK_H)
  363. Xo\panic.o:  $(CONFIG_H)
  364. Xo\pickup.o:  $(HACK_H)
  365. Xo\polyself.o:  $(HACK_H)
  366. Xo\potion.o:  $(HACK_H)
  367. Xo\pray.o:  $(HACK_H)
  368. Xo\pri.o:  $(HACK_H)
  369. Xo\priest.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\eshk.h $(INCL)\epri.h
  370. Xo\prisym.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
  371. Xo\random.o:
  372. Xo\read.o:  $(HACK_H)
  373. Xo\restore.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
  374. Xo\rip.o:  $(HACK_H)
  375. Xo\rnd.o:  $(HACK_H)
  376. Xo\rumors.o:  $(HACK_H)
  377. Xo\save.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
  378. Xo\search.o:  $(HACK_H) $(INCL)\artifact.h
  379. Xo\shk.o:  $(HACK_H) $(INCL)\eshk.h
  380. Xo\shknam.o:  $(HACK_H) $(INCL)\eshk.h
  381. Xo\sit.o:  $(HACK_H)
  382. Xo\sounds.o:  $(HACK_H) $(INCL)\edog.h $(INCL)\eshk.h
  383. Xo\sp_lev.o:  $(HACK_H) $(INCL)\sp_lev.h
  384. Xo\spell.o:  $(HACK_H)
  385. Xo\steal.o:  $(HACK_H)
  386. Xo\termcap.o:  $(HACK_H)
  387. Xo\timeout.o:  $(HACK_H)
  388. Xo\topl.o:  $(HACK_H)
  389. Xo\topten.o:  $(HACK_H)
  390. Xo\track.o:  $(HACK_H)
  391. Xo\trap.o:  $(HACK_H) $(INCL)\edog.h $(INCL)\trapname.h
  392. Xo\u_init.o:  $(HACK_H)
  393. Xo\uhitm.o:  $(HACK_H) $(INCL)\artifact.h
  394. Xo\vault.o:  $(HACK_H) $(INCL)\vault.h
  395. Xo\version.o:  $(HACK_H) $(INCL)\date.h
  396. Xo\weapon.o:  $(HACK_H)
  397. Xo\were.o:  $(HACK_H)
  398. Xo\wield.o:  $(HACK_H)
  399. Xo\wizard.o:  $(HACK_H)
  400. Xo\worm.o:  $(HACK_H) $(INCL)\wseg.h
  401. Xo\worn.o:  $(HACK_H)
  402. Xo\write.o:  $(HACK_H)
  403. Xo\zap.o:  $(HACK_H)
  404. END_OF_FILE
  405. if test 7987 -ne `wc -c <'others/Makefile.pc'`; then
  406.     echo shar: \"'others/Makefile.pc'\" unpacked with wrong size!
  407. fi
  408. # end of 'others/Makefile.pc'
  409. if test -f 'src/objects.c' -a "${1}" != "-c" ; then 
  410.   mv -f src/objects.c src/objects.c.orig
  411. fi
  412. echo shar: Extracting \"'src/objects.c'\" \(31115 characters\)
  413. sed "s/^X//" >'src/objects.c' <<'END_OF_FILE'
  414. X/*    SCCS Id: @(#)objects.c    3.0    89/04/14
  415. X/* NetHack may be freely redistributed.  See license for details. */
  416. X/* Copyright (c) Mike Threepoint, 1989 (890110) */
  417. X
  418. X/* since this file is also used in auxiliary programs, don't include all the 
  419. X * function declarations for all of nethack
  420. X */
  421. X#define EXTERN_H
  422. X#include "config.h"
  423. X#include "obj.h"
  424. X#include "objclass.h"
  425. X#include "prop.h"
  426. X#include "decl.h"
  427. X#undef BOW
  428. X
  429. X/* objects have letter " % ) ( 0 _ ` [ ! ? / = * + . */
  430. X
  431. X#ifdef C
  432. X#undef C
  433. X#endif
  434. X#ifdef TEXTCOLOR
  435. X#define C(n)    n
  436. X#else
  437. X#define C(n)
  438. X#endif
  439. X
  440. Xstruct objclass objects[] = {
  441. X
  442. X    { "strange object", NULL, NULL, 1,0,0,0,0, 0,
  443. X        ILLOBJ_SYM, 0, 0, 0, 0, 0, 0, 0, C(0) },
  444. X/* amulets ... - THE Amulet comes last because it is special */
  445. X#define AMULET(name,desc,power,prob,weight) { \
  446. X    name, desc, NULL, 0,0,0,0,METAL, power, AMULET_SYM, prob, 0, weight, \
  447. X    150, 0, 0, 0, C(HI_METAL) }
  448. X
  449. X    AMULET("amulet of esp",       "circular",    TELEPAT,    190, 2),
  450. X    AMULET("amulet of life saving",   "spherical",    LIFESAVED,   90, 2),
  451. X    AMULET("amulet of strangulation", "oval",    STRANGLED,  150, 2),
  452. X    AMULET("amulet of restful sleep", "triangular",    SLEEPING,   150, 2),
  453. X    AMULET("amulet versus poison",      "pyramidal",    POISON_RES, 180, 2),
  454. X    AMULET("amulet of change",      "square",    0,        150, 2),
  455. X                                /* POLYMORPH */
  456. X    AMULET("amulet of reflection",      "hexagonal",    REFLECTING,  90, 2),
  457. X    { "Amulet of Yendor", NULL, NULL, 1,0,1,0,METAL, 0,
  458. X        AMULET_SYM, 0, 0, 2, 3500, 0, 0, 0, C(HI_METAL) },
  459. X#undef AMULET
  460. X
  461. X#define FOOD(name,prob,delay,wt,uk,tin,nutrition,color) { \
  462. X    name, NULL, NULL, 1,1,uk,0,tin, 0, FOOD_SYM, prob, delay, wt, \
  463. X    nutrition/20 + 5, 0, 0, nutrition, C(color) }
  464. X
  465. X/* dog eats foods 0-4 but prefers tripe rations above all others */
  466. X/* fortune cookies can be read */
  467. X/* carrots improve your vision */
  468. X/* +0 tins contain monster meat */
  469. X/* +1 tins (of spinach) make you stronger (like Popeye) */
  470. X/* food CORPSE is a cadaver of some type */
  471. X
  472. X    /* meat */
  473. X#ifdef TOLKIEN
  474. X    FOOD("tripe ration",       145, 1, 2, 0, 0, 200, BROWN),
  475. X#else
  476. X    FOOD("tripe ration",       150, 1, 2, 0, 0, 200, BROWN),
  477. X#endif
  478. X    FOOD("dead lizard",        35, 0, 1, 0, 0,  40, GREEN),
  479. X    FOOD("corpse",             0, 0, 0, 0, 0,   0, BROWN),
  480. X    FOOD("egg",            75, 0, 1, 1, 0,  80, WHITE),
  481. X    /* fruits & veggies */
  482. X    FOOD("apple",            10, 0, 1, 0, 0,  50, RED),
  483. X    FOOD("orange",             7, 0, 1, 0, 0,  80, ORANGE_COLORED),
  484. X    FOOD("pear",             7, 0, 1, 0, 0,  50, GREEN+BRIGHT),
  485. X    FOOD("melon",             7, 0, 1, 0, 0, 100, GREEN+BRIGHT),
  486. X    FOOD("banana",             7, 0, 1, 0, 0,  80, YELLOW),
  487. X    FOOD("carrot",            15, 0, 1, 0, 0,  50, ORANGE_COLORED),
  488. X    FOOD("clove of garlic",      5, 0, 1, 0, 0,  40, WHITE),
  489. X#ifdef TUTTI_FRUTTI
  490. X    FOOD("slime mold",        75, 0, 1, 0, 0, 250, BROWN),
  491. X#else
  492. X    FOOD("slice of pizza",        75, 0, 1, 0, 0, 250, RED),
  493. X#endif
  494. X    /* human food */
  495. X    FOOD("lump of royal jelly",  0, 0, 1, 0, 0, 200, YELLOW),
  496. X    FOOD("cream pie",        25, 0, 1, 0, 0, 100, WHITE),
  497. X    FOOD("candy bar",         7, 0, 1, 0, 0, 100, BROWN),
  498. X    FOOD("fortune cookie",        55, 0, 1, 0, 0,  40, BROWN),
  499. X#ifdef TOLKIEN
  500. X    FOOD("pancake",         25, 1, 1, 0, 0, 200, BROWN),
  501. X    FOOD("lembas wafer",        20, 1, 1, 0, 0, 800, WHITE+BRIGHT),
  502. X    FOOD("cram ration",        20, 1, 3, 0, 0, 600, HI_ORGANIC),
  503. X    FOOD("food ration",       385, 5, 4, 0, 0, 800, HI_ORGANIC),
  504. X#else
  505. X    FOOD("pancake",         40, 1, 1, 0, 0, 200, BROWN),
  506. X    FOOD("food ration",       405, 5, 4, 0, 0, 800, HI_ORGANIC),
  507. X#endif
  508. X#ifdef ARMY
  509. X    FOOD("K-ration",         0, 1, 1, 0, 0, 400, HI_ORGANIC),
  510. X    FOOD("C-ration",         0, 1, 1, 0, 0, 300, HI_ORGANIC),
  511. X#endif
  512. X    FOOD("tin",            75, 0, 1, 1, METAL, 0, HI_METAL),
  513. X#undef FOOD
  514. X
  515. X#define WEAPON(name,app,kn,mg,bi,prob,wt,cost,sdam,ldam,metal,color) { \
  516. X    name, app, NULL, kn,mg,1,bi,metal, 0, WEAPON_SYM, prob, 0, wt, \
  517. X    cost, sdam, ldam, 0, C(color) }
  518. X#define PROJECTILE(name,app,kn,bi,prob,wt,cost,sdam,ldam,metal,prop,color) { \
  519. X    name, app, NULL, kn,1,1,bi,metal, 0, WEAPON_SYM, prob, 0, wt, \
  520. X    cost, sdam, ldam, prop, C(color) }
  521. X#define BOW(name,app,kn,bi,prob,wt,cost,sdam,ldam,metal,prop,color) { \
  522. X    name, app, NULL, kn,0,1,bi,metal, 0, WEAPON_SYM, prob, 0, wt, \
  523. X    cost, sdam, ldam, -(prop), C(color) }
  524. X
  525. X/* Note: for weapons that don't do an even die of damage (ex. 2-7 or 3-18)
  526. X * the extra damage is added on in weapon.c, not here! */
  527. X
  528. X/* missiles */
  529. X#ifdef TOLKIEN
  530. XPROJECTILE("arrow",        NULL,        1, 0, 37, 0,  2, 6, 6,
  531. X           METAL, WP_BOW, HI_METAL),
  532. XPROJECTILE("elven arrow",    "runed arrow",    0, 0, 10, 0,  2, 7, 6,
  533. X           METAL, WP_BOW, HI_METAL),
  534. XPROJECTILE("orcish arrow",    "black arrow",    0, 0, 11, 0,  2, 5, 6,
  535. X           METAL, WP_BOW, BLACK),
  536. X#else
  537. XPROJECTILE("arrow",        NULL,        1, 0, 58, 0,  2, 6, 6,
  538. X           METAL, WP_BOW, HI_METAL),
  539. X#endif
  540. XPROJECTILE("silver arrow",    NULL,        1, 0,  8, 0,  2, 6, 6,
  541. X           SILVER, WP_BOW, HI_SILVER),
  542. XPROJECTILE("crossbow bolt",    NULL,        1, 0, 60, 0,  2, 4, 6,
  543. X           METAL, WP_CROSSBOW, HI_METAL),
  544. X
  545. XWEAPON("dart",        NULL,        1, 1, 0, 60, 0,  2, 3, 2, METAL, HI_METAL),
  546. XWEAPON("shuriken",    "throwing star",0, 1, 0, 30, 0,  5, 8, 6, METAL, HI_METAL),
  547. XWEAPON("boomerang",    NULL,        1, 1, 0, 15, 3, 20, 9, 9, WOOD, HI_WOOD),
  548. X
  549. X/* spears */
  550. X#ifdef TOLKIEN
  551. XWEAPON("spear",     NULL,        1, 1, 0, 55, 3,  5, 6, 8, METAL, HI_METAL),
  552. XWEAPON("elven spear",    "runed spear",    0, 1, 0, 10, 3,  5, 7, 8, METAL, HI_METAL),
  553. XWEAPON("orcish spear",    "black spear",    0, 1, 0, 13, 3,  5, 5, 8, METAL, BLACK),
  554. XWEAPON("dwarvish spear","shiny spear",    0, 1, 0, 12, 3,  5, 8, 8, METAL, HI_METAL),
  555. X#else
  556. XWEAPON("spear",     NULL,        1, 1, 0, 90, 3,  5, 6, 8, METAL, HI_METAL),
  557. X#endif
  558. XWEAPON("javelin",    "throwing spear",0,1, 0, 10, 3,  5, 6, 6, METAL, HI_METAL),
  559. XWEAPON("trident",    NULL,        1, 0, 0,  8, 4, 15, 6, 4, METAL, HI_METAL),
  560. X                        /* +1 small, +2d4 large */
  561. XWEAPON("lance",     NULL,        1, 0, 0,  8, 4, 10, 6, 8, METAL, HI_METAL),
  562. X
  563. X/* blades */
  564. X#ifdef TOLKIEN
  565. XWEAPON("dagger",    NULL,        1, 1, 0, 25, 2,  4, 4, 3, METAL, HI_METAL),
  566. XWEAPON("elven dagger",    "large runed knife", 0, 1, 0,  8, 2, 4, 5, 3, METAL, HI_METAL),
  567. XWEAPON("orcish dagger", "large black knife", 0, 1, 0, 10, 2, 4, 3, 3, METAL, BLACK),
  568. X#else
  569. XWEAPON("dagger",    NULL,        1, 1, 0, 43, 2,  4, 4, 3, METAL, HI_METAL),
  570. X#endif
  571. XWEAPON("athame",    NULL,        1, 1, 0,  0, 2,  4, 4, 3, METAL, HI_METAL),
  572. XWEAPON("scalpel",    NULL,        1, 1, 0,  0, 1,  4, 4, 3, METAL, HI_METAL),
  573. XWEAPON("knife",     NULL,        1, 1, 0, 25, 2,  4, 3, 3, METAL, HI_METAL),
  574. XWEAPON("axe",        NULL,        1, 0, 0, 50, 3,  8, 6, 4, METAL, HI_METAL),
  575. X#ifdef WORM
  576. XWEAPON("worm tooth",    NULL,        1, 0, 0,  0, 3,  2, 2, 2, 0, WHITE),
  577. XWEAPON("crysknife",    NULL,        1, 0, 0,  0, 3,100,10,10, METAL, HI_METAL),
  578. X#endif
  579. X
  580. X/* swords */
  581. X#ifdef TOLKIEN
  582. XWEAPON("short sword",        NULL,    1, 0, 0,  6, 3, 10, 6, 8, METAL, HI_METAL),
  583. XWEAPON("elven short sword",    "short runed sword",
  584. X                    0, 0, 0,  2, 3, 10, 8, 8, METAL, HI_METAL),
  585. XWEAPON("orcish short sword",    "short black sword",
  586. X                    0, 0, 0,  3, 3, 10, 5, 8, METAL, BLACK),
  587. XWEAPON("dwarvish short sword",    "short shiny sword",
  588. X                    0, 0, 0,  2, 3, 10, 7, 8, METAL, HI_METAL),
  589. X#else
  590. XWEAPON("short sword",        NULL,    1, 0, 0, 13, 3, 10, 6, 8, METAL, HI_METAL),
  591. X#endif
  592. XWEAPON("scimitar", "curved sword",    0, 0, 0,  6, 4, 15, 8, 8, METAL, HI_METAL),
  593. X#ifdef TOLKIEN
  594. XWEAPON("broadsword", "wide sword",    0, 0, 0,  8, 4, 10, 4, 6, METAL, HI_METAL),
  595. X                        /* +d4 small, +1 large */
  596. XWEAPON("elven broadsword",    "wide runed sword",
  597. X                    0, 0, 0,  4, 4, 10, 6, 6, METAL, HI_METAL),
  598. X                        /* +d4 small, +1 large */
  599. X#else
  600. XWEAPON("broadsword", "wide sword",    0, 0, 0, 12, 4, 10, 4, 6, METAL, HI_METAL),
  601. X                        /* +d4 small, +1 large */
  602. X#endif
  603. XWEAPON("long sword",        NULL,    1, 0, 0, 60, 4, 15, 8, 12, METAL, HI_METAL),
  604. X#ifdef TOLKIEN
  605. XWEAPON("two-handed sword",    NULL,    1, 0, 1, 25, 5, 50,12,    6, METAL, HI_METAL),
  606. X                        /* +2d6 large */
  607. XWEAPON("dwarvish mattock",    "huge shiny sword",
  608. X                    0, 0, 1, 15, 6, 50,12,    8, METAL, HI_METAL),
  609. X                        /* +2d6 large */
  610. X#else
  611. XWEAPON("two-handed sword",    NULL,    1, 0, 1, 40, 5, 50,12,    6, METAL, HI_METAL),
  612. X                        /* +2d6 large */
  613. X#endif
  614. XWEAPON("katana", "samurai sword",    0, 0, 0,  6, 4,100,10, 12, METAL, HI_METAL),
  615. X
  616. X/* blunt */
  617. XWEAPON("mace",        NULL,        1, 0, 0, 40, 4,  8, 6, 6, METAL, HI_METAL),
  618. X                        /* +1 small */
  619. XWEAPON("morning star",    NULL,        1, 0, 0, 12, 4, 10, 4, 6, METAL, HI_METAL),
  620. X                        /* +d4 small, +1 large */
  621. XWEAPON("war hammer",    NULL,        1, 0, 0, 15, 3,  5, 4, 4, METAL, HI_METAL),
  622. X                        /* +1 small */
  623. XWEAPON("club",        NULL,        1, 0, 0, 10, 3,  4, 6, 3, WOOD, HI_WOOD),
  624. X#ifdef KOPS
  625. XWEAPON("rubber hose",    NULL,        1, 0, 0,  0, 2,  4, 6, 3, 0, BROWN),
  626. X#endif
  627. XWEAPON("quarterstaff",    "staff",    0, 0, 1, 10, 3,  8, 6, 6, WOOD, HI_WOOD),
  628. X/* two-piece */
  629. XWEAPON("aklys",     "thonged club", 0, 0, 0,  8, 3,  4, 6, 3, METAL, HI_METAL),
  630. XWEAPON("flail",     NULL,        1, 0, 0, 40, 3,  4, 6, 4, METAL, HI_METAL),
  631. X                        /* +1 small, +1d4 large */
  632. X/* whip */
  633. XWEAPON("bullwhip",    NULL,        1, 0, 0,  5, 2,  4, 2, 1, 0, BROWN),
  634. X
  635. X/* polearms */
  636. X/* spear-type */
  637. XWEAPON("partisan", "vulgar polearm",    0, 0, 1, 10, 3, 10, 6, 6, METAL, HI_METAL),
  638. X                        /* +1 large */
  639. XWEAPON("ranseur", "hilted polearm",    0, 0, 1, 10, 3,  6, 4, 4, METAL, HI_METAL),
  640. X                        /* +d4 both */
  641. XWEAPON("spetum", "forked polearm",    0, 0, 1, 10, 3,  5, 6, 6, METAL, HI_METAL),
  642. X                        /* +1 small, +d6 large */
  643. XWEAPON("glaive", "single-edged polearm", 0, 0, 1, 15, 3, 6, 6,10, METAL, HI_METAL),
  644. X/* axe-type */
  645. XWEAPON("halberd", "angled poleaxe",    0, 0, 1, 16, 3, 10,10, 6, METAL, HI_METAL),
  646. X                        /* +1d6 large */
  647. XWEAPON("bardiche", "long poleaxe",    0, 0, 1,  8, 3,  7, 4, 4, METAL, HI_METAL),
  648. X                        /* +1d4 small, +2d4 large */
  649. XWEAPON("voulge", "pole cleaver",    0, 0, 1,  8, 3,  5, 4, 4, METAL, HI_METAL),
  650. X                        /* +d4 both */
  651. X/* curved/hooked */
  652. XWEAPON("fauchard",    "pole sickle",    0, 0, 1, 11, 3,  5, 6, 8, METAL, HI_METAL),
  653. XWEAPON("guisarme",    "pruning hook", 0, 0, 1, 11, 3,  5, 4, 8, METAL, HI_METAL),
  654. X                        /* +1d4 small */
  655. XWEAPON("bill-guisarme","hooked polearm",0, 0, 1,  8, 3,  7, 4,10, METAL, HI_METAL),
  656. X                        /* +1d4 small */
  657. X/* other */
  658. XWEAPON("lucern hammer", "pronged polearm", 0, 0, 1, 10, 3,  7, 4, 6, METAL, HI_METAL),
  659. X                        /* +1d4 small */
  660. XWEAPON("bec de corbin","beaked polearm",0, 0, 1,  8, 3,  8, 8, 6, METAL, HI_METAL),
  661. X
  662. X/* bows */
  663. X#ifdef TOLKIEN
  664. XBOW("bow",      NULL,     1, 0, 24, 3, 120, 30, 6, 0, WP_BOW, HI_WOOD),
  665. XBOW("elven bow",  "runed bow",    0, 0, 12, 3, 120, 35, 6, 0, WP_BOW, HI_WOOD),
  666. XBOW("orcish bow", "black bow",    0, 0, 12, 3, 120, 25, 6, 0, WP_BOW, BLACK),
  667. X#else
  668. XBOW("bow",      NULL,     1, 0, 48, 3, 120, 30, 6, 0, WP_BOW, HI_WOOD),
  669. X#endif
  670. XBOW("sling",       NULL,            1, 0, 40, 2,  20,  4, 6, 0, WP_SLING, HI_WOOD),
  671. XBOW("crossbow",      NULL,        1, 0, 45, 3,  40, 35, 6, 0, WP_CROSSBOW, HI_WOOD),
  672. X#undef WEAPON
  673. X#undef PROJECTILE
  674. X#undef BOW
  675. X
  676. X/* tools ... - PICK AXE comes last because it has special characteristics */
  677. X#define TOOL(name,desc,kn,chg,prob,weight,cost,material,color) {\
  678. X    name, desc, NULL, kn,0,chg,chg,material, 0, TOOL_SYM, prob, 0, \
  679. X    weight, cost, 0, 0, 0, C(color)}
  680. X
  681. X#ifdef WALKIES
  682. X    TOOL("leash",        NULL,    1, 0,  70,  3,    20, 0, HI_LEATHER),
  683. X#endif
  684. X#ifdef MEDUSA
  685. X    TOOL("blindfold",    NULL,    1, 0,  55,  2,    20, 0, BLACK),
  686. X    TOOL("mirror",        NULL,    1, 0,  50,  3,    40, GLASS, BLUE),
  687. X#else
  688. X    TOOL("blindfold",    NULL,    1, 0, 105,  2,    20, 0, BLACK),
  689. X#endif
  690. X    TOOL("tinning kit",    NULL,    1, 0,  15, 10,    30, METAL, HI_METAL),
  691. X    TOOL("lock pick",    NULL,    1, 0,  55,  2,    20, METAL, HI_METAL),
  692. X    TOOL("credit card",    NULL,    1, 0,    5,  1,    10, 0, WHITE),
  693. X#ifdef WALKIES
  694. X    TOOL("key",        NULL,    1, 0, 100,  1,    10, METAL, HI_METAL),
  695. X#else
  696. X    TOOL("key",        NULL,    1, 0, 155,  1,    10, METAL, HI_METAL),
  697. X#endif
  698. X    TOOL("skeleton key",    "key",    0, 0,  60,  1,    10, METAL, HI_METAL),
  699. X    TOOL("expensive camera", NULL,    1, 0,    5,  3, 200, 0, BLACK),
  700. X    TOOL("magic marker",    NULL,    1, 1,  15,  1,    50, 0, RED),
  701. X    TOOL("stethoscope",    NULL,    1, 0,  15,  2,    75, 0, HI_METAL),
  702. X    TOOL("tin opener",    NULL,    1, 0,  25,  1,    30, METAL, HI_METAL),
  703. X#ifdef WALKIES
  704. X    TOOL("lamp",        NULL,    1, 1,  90, 10,    50, 0, YELLOW),
  705. X#else
  706. X    TOOL("lamp",        NULL,    1, 1, 105, 10,    50, 0, YELLOW),
  707. X#endif
  708. X    TOOL("magic lamp",    "lamp", 0, 1,  20, 10,    50, 0, YELLOW),
  709. X    TOOL("crystal ball",    NULL,    1, 1,  35, 15,    60, GLASS, HI_GLASS),
  710. X    TOOL("figurine",    NULL,    1, 0,  35,  5,    80, MINERAL, HI_MINERAL),
  711. X    TOOL("ice box",     NULL,    1, 0,    5, 40,  30, 0, WHITE),
  712. X    TOOL("large box",    NULL,    1, 0,  40, 40,  20, WOOD, HI_WOOD),
  713. X    TOOL("chest",        NULL,    1, 0,  35, 40,  20, WOOD, HI_WOOD),
  714. X    TOOL("sack",        "bag",    0, 0,  40,  3,  20, 0, HI_CLOTH),
  715. X    TOOL("bag of holding",    "bag",    0, 0,  20,  3, 100, 0, HI_CLOTH),
  716. X    TOOL("bag of tricks",    "bag",    0, 1,  20,  3, 100, 0, HI_CLOTH),
  717. X#ifndef MUSIC
  718. X    TOOL("whistle",     NULL,    1, 0, 120,  2,    10, METAL, HI_METAL),
  719. X    TOOL("magic whistle","whistle",    0, 0,  50,  2,    10, METAL, HI_METAL),
  720. X#else
  721. X    TOOL("whistle",     NULL,    1, 0, 105,  2,    10, METAL, HI_METAL),
  722. X    TOOL("magic whistle","whistle",    0, 0,  30,  2,    10, METAL, HI_METAL),
  723. X    TOOL("flute",        NULL,    1, 0,    6,  3,    12, WOOD, HI_WOOD),
  724. X    TOOL("magic flute",   "flute",    0, 1,    2,  3,    12, WOOD, HI_WOOD),
  725. X    TOOL("horn",        NULL,    1, 0,    5,  4,    15, METAL, HI_METAL),
  726. X    TOOL("frost horn",    "horn", 0, 1,    2,  4,    15, METAL, HI_METAL),
  727. X    TOOL("fire horn",    "horn", 0, 1,    2,  4,    15, METAL, HI_METAL),
  728. X    TOOL("harp",        NULL,    1, 0,    4, 10,    50, METAL, HI_METAL),
  729. X    TOOL("magic harp",    "harp", 0, 1,    2, 10,    50, METAL, HI_METAL),
  730. X    TOOL("bugle",        NULL,    1, 0,    6,  3,    15, METAL, HI_METAL),
  731. X    TOOL("drum",        NULL,    1, 0,    4,  4,    25, 0, BROWN),
  732. X    TOOL("drum of earthquake", "drum", 0, 1, 2,  4,    25, 0, BROWN),
  733. X#endif
  734. X#undef TOOL
  735. X    { "pick-axe", NULL, NULL, 1,0,1,1,METAL, 0, TOOL_SYM, 20,
  736. X                        0, 10, 50, 6, 3, 0, C(HI_METAL)},
  737. X    { "blinding venom", "splash of venom", NULL,
  738. X        0,1,0,0,0, 0, VENOM_SYM, 500, 0, 0, 0, 0, 0, 0, C(HI_ORGANIC)},
  739. X    { "acid venom", "splash of venom", NULL,
  740. X            0,1,0,0,0, 0, VENOM_SYM, 500, 0, 0, 0, 6, 6, 0, C(HI_ORGANIC)},
  741. X        /* +d6 small or large */
  742. X    { "heavy iron ball", NULL, NULL, 1,0,0,0,METAL, 0,
  743. X        BALL_SYM, 1000, 0, 20, 10, 0, 0, 0, C(HI_METAL)},
  744. X    { "iron chain", NULL, NULL, 1,0,0,0,METAL, 0,
  745. X        CHAIN_SYM, 1000, 0, 20, 0, 0, 0, 0, C(HI_METAL)},
  746. X
  747. X    /* Note: boulders and rocks normally do not appear at random; the
  748. X     * probabilities only come into effect when you try to polymorph them.
  749. X     */
  750. X    { "boulder", NULL, NULL, 1,0,0,0,MINERAL, 0, ROCK_SYM, 100, 0,
  751. X        200 /* > MAX_CARR_CAP */, 0, 20, 20, 0, C(HI_MINERAL)},
  752. X    { "statue", NULL, NULL, 1,0,0,0,MINERAL, 0, ROCK_SYM, 900, 0,
  753. X            250, 0, 20, 20, 0, C(HI_MINERAL)},
  754. X
  755. X#define ARMOR(name,desc,kn,blk,power,prob,delay,weight,cost,ac,can,metal,c) \
  756. X    {name, desc, NULL, kn,0,1,blk,metal, power, ARMOR_SYM, prob,\
  757. X    delay, weight, cost, ac, can, 0, C(c)}
  758. X#ifdef TOLKIEN
  759. XARMOR("elven leather helm", "leather hat",
  760. X            0, 0, 0,  6, 1, 2,   8, 9, 0, 0, HI_LEATHER),
  761. XARMOR("orcish helm", "black cap",
  762. X            0, 0, 0,  6, 1, 3,  10, 9, 0, METAL, BLACK),
  763. XARMOR("dwarvish iron helm", "hard hat",
  764. X            0, 0, 0,  6, 1, 3,  20, 8, 0, METAL, HI_METAL),
  765. X#else
  766. XARMOR("orcish helm", "black cap",
  767. X            0, 0, 0, 18, 1, 3,  10, 9, 0, METAL, BLACK),
  768. X#endif
  769. XARMOR("fedora", NULL,    1, 0, 0,  0, 1, 1,   8, 9, 0, 0, BROWN),
  770. XARMOR("helmet", "rusty pot",
  771. X            0, 0, 0, 12, 1, 2,  10, 9, 0, METAL, HI_METAL),
  772. XARMOR("helm of brilliance", "plumed hat",
  773. X            0, 0, 0,  6, 1, 2,  50, 9, 0, METAL, GREEN),
  774. XARMOR("helm of opposite alignment", "crested helmet",
  775. X            0, 0, 0,  6, 1, 2,  50, 9, 0, METAL, HI_METAL),
  776. XARMOR("helm of telepathy", "visored helmet",
  777. X            0, 0, TELEPAT, 2, 1, 2, 50, 9, 0, METAL, HI_METAL),
  778. X
  779. X/* non-metal and (METAL | 1) armors do not rust */
  780. XARMOR("dragon scale mail", NULL,
  781. X            1, 1, 0,  0, 5, 5,1000, 1, 0, 0, HI_LEATHER),
  782. XARMOR("plate mail", NULL,
  783. X            1, 1, 0, 44, 5, 9, 600, 3, 2, METAL, HI_METAL),
  784. XARMOR("crystal plate mail", NULL,
  785. X            1, 1, 0, 10, 5, 9, 820, 3, 2, 0, WHITE+BRIGHT),
  786. X#ifdef SHIRT
  787. XARMOR("bronze plate mail", NULL,
  788. X            1, 1, 0, 25, 5, 9, 400, 4, 0, COPPER, HI_COPPER),
  789. X#else
  790. XARMOR("bronze plate mail", NULL,
  791. X            1, 1, 0, 35, 5, 9, 400, 4, 0, COPPER, HI_COPPER),
  792. X#endif
  793. XARMOR("splint mail", NULL,    1, 1, 0, 66, 5, 8,  80, 4, 1, METAL, HI_METAL),
  794. XARMOR("banded mail", NULL,    1, 1, 0, 76, 5, 8,  90, 4, 0, METAL, HI_METAL),
  795. X#ifdef TOLKIEN
  796. XARMOR("dwarvish mithril-coat", NULL,
  797. X            1, 0, 0, 10, 1, 2, 240, 4, 3, MITHRIL, HI_METAL),
  798. XARMOR("elven mithril-coat", NULL, 1, 0, 0, 15, 1, 2, 240, 5, 3, MITHRIL, HI_METAL),
  799. XARMOR("chain mail", NULL,    1, 0, 0, 76, 5, 6,  75, 5, 1, METAL, HI_METAL),
  800. XARMOR("orcish chain mail", "black chain mail",
  801. X                0, 0, 0, 20, 5, 6,  75, 5, 1, METAL, BLACK),
  802. X#else
  803. XARMOR("dwarvish mithril-coat", NULL,
  804. X            1, 0, 0, 25, 1, 2, 240, 4, 3, MITHRIL, HI_METAL),
  805. XARMOR("chain mail", NULL,    1, 0, 0, 96, 5, 6,  75, 5, 1, METAL, HI_METAL),
  806. X#endif
  807. XARMOR("scale mail", NULL,    1, 0, 0, 76, 5, 5,  45, 6, 0, METAL, HI_METAL),
  808. XARMOR("studded leather armor", NULL,
  809. X                1, 0, 0, 76, 3, 3,  15, 7, 1, 0, HI_LEATHER),
  810. X#ifdef TOLKIEN
  811. XARMOR("ring mail", NULL,    1, 0, 0, 76, 5, 4, 100, 7, 0, METAL, HI_METAL),
  812. XARMOR("orcish ring mail", "black ring mail",
  813. X                0, 0, 0, 20, 5, 5,  80, 8, 1, METAL, BLACK),
  814. X#else
  815. XARMOR("ring mail", NULL,    1, 0, 0, 96, 5, 4, 100, 7, 0, METAL, HI_METAL),
  816. X#endif
  817. XARMOR("leather armor", NULL,    1, 0, 0, 97, 3, 2,   5, 8, 0, 0, HI_LEATHER),
  818. X
  819. X/*  'cope' is not a spelling mistake... leave it be */
  820. XARMOR("mummy wrapping", NULL,
  821. X            1, 0, 0,         0, 0, 2,  2, 10, 2, 0, HI_CLOTH),
  822. X#ifdef TOLKIEN
  823. XARMOR("elven cloak", "ornamental cope",
  824. X            0, 0, STEALTH,        12, 0, 2, 60,  9, 3, 0, HI_CLOTH),
  825. XARMOR("orcish cloak", "black mantelet",
  826. X            0, 0, 0,        12, 0, 2, 40, 10, 3, 0, BLACK),
  827. XARMOR("dwarvish cloak", "colorful hooded cloak",
  828. X            0, 0, 0,        12, 0, 2, 50, 10, 3, 0, HI_CLOTH),
  829. X#else
  830. XARMOR("elven cloak", "ornamental cope",
  831. X            0, 0, STEALTH,        36, 0, 2, 60,  9, 3, 0, HI_CLOTH),
  832. X#endif
  833. XARMOR("cloak of protection", "tattered cape",
  834. X            0, 0, PROTECTION,   12, 0, 2, 50,  7, 3, 0, HI_CLOTH),
  835. XARMOR("cloak of invisibility", "opera hood",
  836. X            0, 0, INVIS,        12, 0, 2, 60,  9, 3, 0, HI_CLOTH),
  837. XARMOR("cloak of magic resistance", "faded pall",
  838. X            0, 0, ANTIMAGIC,     2, 0, 2, 60,  9, 3, 0, HI_CLOTH),
  839. XARMOR("cloak of displacement", "piece of cloth",
  840. X            0, 0, DISPLACED,    12, 0, 2, 50,  9, 3, 0, HI_CLOTH),
  841. X
  842. X#ifdef TOLKIEN
  843. XARMOR("small shield", NULL,
  844. X            1, 0, 0,    6, 0, 2,  3,  9, 0, METAL, HI_METAL),
  845. XARMOR("elven shield", "blue and green shield",
  846. X            0, 0, 0,    2, 0, 2,  3,  8, 0, METAL, GREEN),
  847. XARMOR("Uruk-hai shield", "white-handed shield",
  848. X            0, 0, 0,    2, 0, 4,  3,  9, 0, METAL, HI_METAL),
  849. XARMOR("orcish shield", "red-eyed shield",
  850. X            0, 0, 0,    2, 0, 3,  3,  9, 0, METAL, RED),
  851. XARMOR("large shield", NULL,
  852. X            1, 1, 0,    7, 0, 4,  7,  8, 0, METAL, HI_METAL),
  853. XARMOR("dwarvish roundshield", "large round shield",
  854. X            0, 0, 0,    4, 0, 4,  7,  8, 0, METAL, HI_METAL),
  855. X#else
  856. XARMOR("small shield", NULL,
  857. X            1, 0, 0,       12, 0, 2,  3,  9, 0, METAL, HI_METAL),
  858. XARMOR("large shield", NULL,
  859. X            1, 1, 0,       11, 0, 4,  7,  8, 0, METAL, HI_METAL),
  860. X#endif
  861. XARMOR("shield of reflection", "polished silver shield",
  862. X            0, 0, REFLECTING,  3, 0, 3, 50, 8, 0, SILVER, HI_SILVER),
  863. X
  864. X#ifdef SHIRT
  865. XARMOR("Hawaiian shirt", NULL,    1, 0, 0, 10, 0, 2, 5, 10, 0, 0, MAGENTA),
  866. X#endif
  867. X
  868. XARMOR("leather gloves", "old gloves",
  869. X            0, 0, 0,       16, 1, 2,  8, 9, 0, 0, BROWN),
  870. XARMOR("gauntlets of fumbling", "padded gloves",
  871. X            0, 0, FUMBLING,     8, 1, 2, 50, 9, 0, 0, BROWN),
  872. XARMOR("gauntlets of power", "riding gloves",
  873. X            0, 0, 0,        8, 1, 2, 50, 9, 0, METAL, BROWN),
  874. XARMOR("gauntlets of dexterity", "fencing gloves",
  875. X            0, 0, 0,        8, 1, 2, 50, 9, 0, 0, BROWN),
  876. X
  877. XARMOR("low boots", "walking shoes",
  878. X            0, 0, 0,       25, 2, 3,  8, 9, 0, 0, BROWN),
  879. XARMOR("iron shoes", "hard shoes",
  880. X            0, 0, 0,        7, 2, 5, 16, 8, 0, METAL, HI_METAL),
  881. XARMOR("high boots", "jackboots",
  882. X            0, 0, 0,       15, 2, 4, 12, 8, 0, 0, BROWN),
  883. XARMOR("speed boots", "combat boots",
  884. X            0, 0, FAST,       12, 2, 4, 50, 9, 0, 0, BROWN),
  885. XARMOR("water walking boots", "jungle boots",
  886. X            0, 0, WWALKING,    12, 2, 4, 50, 9, 0, 0, BROWN),
  887. XARMOR("jumping boots", "hiking boots",
  888. X            0, 0, JUMPING,       12, 2, 4, 50, 9, 0, 0, BROWN),
  889. XARMOR("elven boots", "mud boots",
  890. X            0, 0, STEALTH,       12, 2, 3,  8, 9, 0, 0, BROWN),
  891. XARMOR("fumble boots", "riding boots",
  892. X            0, 0, FUMBLING,    12, 2, 4, 30, 9, 0, 0, BROWN),
  893. XARMOR("levitation boots", "snow boots",
  894. X            0, 0, LEVITATION,  12, 2, 4, 30, 9, 0, 0, BROWN),
  895. X#undef ARMOR
  896. X
  897. X#define POTION(name,desc,power,prob,cost,color) \
  898. X        { name, desc, NULL, 0,1,0,0,0, power,\
  899. X        POTION_SYM, prob, 0, 2, cost, 0, 0, 0, C(color)}
  900. X
  901. X#ifdef SPELLS
  902. XPOTION("fruit juice",        "smoky",    0,    45, 50,    WHITE),
  903. XPOTION("booze",         "bubbly",    0,    45, 50,    WHITE),
  904. XPOTION("gain energy",        "ebony",     0,    45,150,    BLACK),
  905. X#else
  906. XPOTION("fruit juice",        "smoky",    0,    70, 50,    WHITE),
  907. XPOTION("booze",         "bubbly",    0,    65, 50,    WHITE),
  908. X#endif
  909. XPOTION("gain ability",        "swirly",    0,    45,300,    WHITE),
  910. XPOTION("restore ability",    "pink",        0,    45,100,    MAGENTA+BRIGHT),
  911. XPOTION("sickness",        "ruby",        SICK,    45, 50,    RED),
  912. XPOTION("confusion",        "orange",    CONFUSION, 45, 100, ORANGE_COLORED),
  913. XPOTION("blindness",        "yellow",    BLINDED, 45,150, YELLOW),
  914. XPOTION("paralysis",        "emerald",     0,    45,300,    GREEN+BRIGHT),
  915. XPOTION("speed",         "dark green",     FAST,    45,200,    GREEN),
  916. XPOTION("levitation",        "cyan",        LEVITATION, 45,200, CYAN),
  917. XPOTION("hallucination",     "brilliant blue", HALLUC, 45,100, BLUE+BRIGHT),
  918. XPOTION("invisibility",        "sky blue",    INVIS,    45,150,    CYAN),
  919. XPOTION("see invisible",     "magenta",    SEE_INVIS, 45,50, MAGENTA),
  920. XPOTION("healing",        "purple",     0,    65,100,    MAGENTA),
  921. XPOTION("extra healing",     "purple-red",    0,    50,100,    MAGENTA),
  922. XPOTION("gain level",        "puce",        0,    20,300,    MAGENTA+BRIGHT),
  923. XPOTION("enlightenment",        "brown",    0,    20,200,    BROWN),
  924. XPOTION("monster detection",    "white",    0,    45,150,    WHITE),
  925. XPOTION("object detection",    "glowing",    0,    45,150,    WHITE+BRIGHT),
  926. XPOTION("water",         "clear",    0,    125,100,CYAN),
  927. X#undef POTION
  928. X
  929. X#define SCROLL(name,text,prob,cost) { name, text, NULL, 0,1,0,0,0, 0,\
  930. X        SCROLL_SYM, prob, 0, 3, cost, 0, 0, 0, C(HI_PAPER)}
  931. X#ifdef MAIL
  932. X    SCROLL("mail",            "KIRJE",         0,   0),
  933. X#endif
  934. X    SCROLL("enchant armor",     "ZELGO MER",        63,  80),
  935. X    SCROLL("destroy armor",     "JUYED AWK YACC",   45, 100),
  936. X    SCROLL("confuse monster",    "NR 9",         53, 100),
  937. X    SCROLL("scare monster",     "XIXAXA XOXAXA XUXAXA", 35, 100),
  938. X    SCROLL("blank paper",        "READ ME",        28,  60),
  939. X    SCROLL("remove curse",        "PRATYAVAYAH",        65,  80),
  940. X    SCROLL("enchant weapon",    "DAIYEN FOOELS",    85,  60),
  941. X    SCROLL("create monster",    "LEP GEX VEN ZEA",  45, 200),
  942. X    SCROLL("taming",        "PRIRUTSENIE",        15, 200),
  943. X    SCROLL("genocide",        "ELBIB YLOH",        15, 300),
  944. X    SCROLL("light",         "VERR YED HORRE",   95,  50),
  945. X    SCROLL("teleportation",     "VENZAR BORGAVVE",  55, 100),
  946. X    SCROLL("gold detection",    "THARR",        33, 100),
  947. X    SCROLL("food detection",    "YUM YUM",        25, 100),
  948. X    SCROLL("identify",        "KERNOD WEL",        185, 20),
  949. X    SCROLL("magic mapping",     "ELAM EBOW",        45, 100),
  950. X    SCROLL("amnesia",        "DUAM XNAHT",        35, 200),
  951. X    SCROLL("fire",            "ANDOVA BEGARIN",   48, 100),
  952. X    SCROLL("punishment",        "VE FORBRYDERNE",   15, 300),
  953. X    SCROLL("charging",        "HACKEM MUCHE",     15, 300),
  954. X    SCROLL(NULL,            "VELOX NEB",         0, 100),
  955. X    SCROLL(NULL,            "FOOBIE BLETCH",     0, 100),
  956. X    SCROLL(NULL,            "TEMOV",         0, 100),
  957. X    SCROLL(NULL,            "GARVEN DEH",         0, 100),
  958. X#undef SCROLL
  959. X
  960. X#define WAND(name,typ,prob,cost,flags,metal,c)    { \
  961. X    name, typ, NULL, 0,0,1,0,metal, 0, WAND_SYM, \
  962. X    prob, 0, 3, cost, flags, 0, 0, C(c) }
  963. X
  964. XWAND("light",        "glass",    95, 100, NODIR,    GLASS,HI_GLASS),
  965. XWAND("secret door detection", "balsa",    50, 150, NODIR,    WOOD,HI_WOOD),
  966. XWAND("create monster",    "maple",    45, 200, NODIR,    WOOD,HI_WOOD),
  967. XWAND("wishing",     "pine",         5, 500, NODIR,    WOOD,HI_WOOD),
  968. XWAND("striking",    "oak",         75, 150, IMMEDIATE,WOOD,HI_WOOD),
  969. XWAND("nothing",     "ebony",    25, 100, IMMEDIATE,WOOD,HI_WOOD),
  970. XWAND("make invisible",    "marble",    45, 150, IMMEDIATE,MINERAL,HI_MINERAL),
  971. XWAND("slow monster",    "tin",        55, 150, IMMEDIATE,METAL,HI_METAL),
  972. XWAND("speed monster",    "brass",    55, 150, IMMEDIATE,COPPER,HI_COPPER),
  973. XWAND("undead turning",    "copper",    55, 150, IMMEDIATE,COPPER,HI_COPPER),
  974. XWAND("polymorph",    "silver",    45, 200, IMMEDIATE,SILVER,HI_SILVER),
  975. XWAND("cancellation",    "platinum",    45, 200, IMMEDIATE,PLATINUM,HI_SILVER|BRIGHT),
  976. XWAND("teleportation",    "iridium",     45, 200, IMMEDIATE,METAL,CYAN|BRIGHT),
  977. X#ifdef PROBING
  978. XWAND("opening",     "zinc",        25, 150, IMMEDIATE,METAL,HI_METAL),
  979. XWAND("locking",     "aluminum",    25, 150, IMMEDIATE,METAL,HI_METAL),
  980. XWAND("probing",     "uranium",    30, 150, IMMEDIATE,METAL,HI_METAL),
  981. X#else
  982. XWAND("opening",     "zinc",        40, 150, IMMEDIATE,METAL,HI_METAL),
  983. XWAND("locking",     "aluminum",    40, 150, IMMEDIATE,METAL,HI_METAL),
  984. X#endif
  985. XWAND("digging",     "iron",     55, 150, RAY,       METAL,HI_METAL),
  986. XWAND("magic missile",    "steel",    50, 150, RAY,       METAL,HI_METAL),
  987. XWAND("fire",        "hexagonal",    40, 175, RAY,       METAL,HI_METAL),
  988. XWAND("sleep",        "runed",    50, 175, RAY,       METAL,HI_METAL),
  989. XWAND("cold",        "short",    40, 175, RAY,       METAL,HI_METAL),
  990. XWAND("death",        "long",      5, 500, RAY,       METAL,HI_METAL),
  991. XWAND("lightning",    "curved",    40, 175, RAY,       METAL,HI_METAL),
  992. XWAND(NULL,        "forked",     0, 150, 0,       WOOD,HI_WOOD),
  993. XWAND(NULL,        "spiked",     0, 150, 0,       METAL,HI_METAL),
  994. XWAND(NULL,        "jeweled",     0, 150, 0,       METAL,HI_MINERAL),
  995. X#undef WAND
  996. X
  997. X#ifdef SPELLS
  998. X/* books */
  999. X#define SPELL(name,desc,prob,delay,level,flags,color) \
  1000. X    { name, desc, NULL, 0,1,0,0,0, 0, SPBOOK_SYM, prob, delay, \
  1001. X    5, level*100, flags, 0, level, C(color)}
  1002. X
  1003. XSPELL("magic missile",     "parchment",    45,  3, 2, RAY,        HI_PAPER),
  1004. XSPELL("fireball",     "vellum",    20,  6, 4, RAY,        HI_PAPER),
  1005. XSPELL("sleep",         "dog eared",    50,  1, 1, RAY,        HI_PAPER),
  1006. XSPELL("cone of cold",     "ragged",    10,  8, 5, RAY,        HI_PAPER),
  1007. XSPELL("finger of death", "stained",     5, 10, 7, RAY,        HI_PAPER),
  1008. XSPELL("light",         "cloth",    45,  1, 1, NODIR,    HI_CLOTH),
  1009. XSPELL("detect monsters", "leather",     45,  1, 1, NODIR,    HI_LEATHER),
  1010. XSPELL("healing",     "white",    40,  2, 1, NODIR,    WHITE),
  1011. XSPELL("knock",         "pink",    40,  1, 1, IMMEDIATE,    MAGENTA+BRIGHT),
  1012. XSPELL("force bolt",     "red",        40,  2, 1, IMMEDIATE,    RED),
  1013. XSPELL("confuse monster", "orange",    37,  2, 2, IMMEDIATE,    ORANGE_COLORED),
  1014. XSPELL("cure blindness",  "yellow",     27,  2, 2, IMMEDIATE,    YELLOW),
  1015. XSPELL("slow monster",     "light green",    37,  2, 2, IMMEDIATE,    GREEN+BRIGHT),
  1016. XSPELL("wizard lock",     "dark green",    35,  3, 2, IMMEDIATE,    GREEN),
  1017. XSPELL("create monster",  "turquoise",    37,  3, 2, NODIR,    CYAN+BRIGHT),
  1018. XSPELL("detect food",     "cyan",    37,  3, 2, NODIR,    CYAN),
  1019. XSPELL("cause fear",     "light blue",    25,  3, 3, NODIR,    BLUE+BRIGHT),
  1020. XSPELL("clairvoyance",     "dark blue",    15,  3, 3, NODIR,    BLUE),
  1021. XSPELL("cure sickness",     "indigo",    32,  3, 3, NODIR,    BLUE),
  1022. XSPELL("charm monster",     "magenta",    20,  3, 3, IMMEDIATE,    MAGENTA),
  1023. XSPELL("haste self",     "purple",    33,  4, 3, NODIR,    MAGENTA),
  1024. XSPELL("detect unseen",     "violet",    25,  4, 3, NODIR,    MAGENTA),
  1025. XSPELL("levitation",     "tan",        25,  4, 4, NODIR,    BROWN),
  1026. XSPELL("extra healing",     "plaid",    32,  5, 3, NODIR,    GREEN),
  1027. XSPELL("restore ability", "light brown",    25,  5, 4, NODIR,    BROWN),
  1028. XSPELL("invisibility",     "dark brown",    32,  5, 4, NODIR,    BROWN),
  1029. XSPELL("detect treasure", "gray",    25,  5, 4, NODIR,    GRAY),
  1030. XSPELL("remove curse",     "white",    25,  5, 5, NODIR,    WHITE),
  1031. XSPELL("dig",         "mottled",    22,  6, 5, RAY,        HI_PAPER),
  1032. XSPELL("magic mapping",     "rusty",    18,  7, 5, NODIR,    RED),
  1033. XSPELL("identify",     "bronze",    25,  8, 5, NODIR,    HI_COPPER),
  1034. XSPELL("turn undead",     "copper",    17,  8, 6, IMMEDIATE,    HI_COPPER),
  1035. XSPELL("polymorph",     "silver",    12,  8, 6, IMMEDIATE,    HI_SILVER),
  1036. XSPELL("teleport away",     "gold",    15,  6, 6, IMMEDIATE,    HI_GOLD),
  1037. XSPELL("create familiar", "glittering",     10,  7, 6, NODIR,    WHITE+BRIGHT),
  1038. XSPELL("cancellation",     "shining",    12,  8, 7, IMMEDIATE,    WHITE+BRIGHT),
  1039. XSPELL("genocide",     "glowing",     5, 10, 7, NODIR,    WHITE+BRIGHT),
  1040. XSPELL(NULL,         "dull",     0,  0, 0, 0,        HI_PAPER),
  1041. XSPELL(NULL,         "thin",     0,  0, 0, 0,        HI_PAPER),
  1042. XSPELL(NULL,         "thick",     0,  0, 0, 0,        HI_PAPER),
  1043. X#undef SPELL
  1044. X#endif /* SPELLS /**/
  1045. X
  1046. X#define RING(name,stone,power,cost,spec,metal,color) \
  1047. X        { name, stone, NULL, 0,0,spec,spec,metal, \
  1048. X        power, RING_SYM, 0, 0, 1, cost, 0, 0, 0, C(color)}
  1049. X
  1050. XRING("adornment",    "wooden",    ADORNED,    100, 1, WOOD, HI_WOOD),
  1051. XRING("gain strength",    "granite",    0,        150, 1, MINERAL, HI_MINERAL),
  1052. XRING("increase damage", "coral",    0,        150, 1, MINERAL, RED+BRIGHT),
  1053. XRING("protection",    "black onyx",    PROTECTION,    100, 1, MINERAL, BLACK),
  1054. XRING("regeneration",    "moonstone",    REGENERATION,    200, 0, MINERAL, HI_MINERAL),
  1055. XRING("searching",    "tiger eye",    SEARCHING,    200, 0, MINERAL, BROWN),
  1056. XRING("stealth",     "jade",        STEALTH,    100, 0, MINERAL, GREEN),
  1057. XRING("levitation",    "agate",    LEVITATION,    200, 0, MINERAL, RED),
  1058. XRING("hunger",        "topaz",    HUNGER,     100, 0, MINERAL, CYAN),
  1059. XRING("aggravate monster", "sapphire",    AGGRAVATE_MONSTER, 150, 0, METAL, BLUE),
  1060. XRING("conflict",    "ruby",     CONFLICT,    300, 0, METAL, RED),
  1061. XRING("warning",     "diamond",     WARNING,    100, 0, METAL, WHITE+BRIGHT),
  1062. XRING("poison resistance", "pearl",    POISON_RES,    150, 0, METAL, WHITE),
  1063. XRING("fire resistance", "iron",        FIRE_RES,    200, 0, METAL, HI_METAL),
  1064. XRING("cold resistance", "brass",    COLD_RES,    150, 0, COPPER, HI_COPPER),
  1065. XRING("shock resistance", "copper",    SHOCK_RES,    150, 0, COPPER, HI_COPPER),
  1066. XRING("teleportation",    "silver",    TELEPORT,    200, 0, SILVER, HI_SILVER),
  1067. XRING("teleport control", "gold",    TELEPORT_CONTROL,
  1068. X                            300, 0, GOLD, HI_GOLD),
  1069. X#ifdef POLYSELF
  1070. XRING("polymorph",    "ivory",    POLYMORPH,    300, 0, 0, WHITE),
  1071. XRING("polymorph control","emerald",    POLYMORPH_CONTROL,
  1072. X                            300, 0, METAL, GREEN+BRIGHT),
  1073. X#endif
  1074. XRING("invisibility",    "wire",        INVIS,        150, 0, METAL, HI_METAL),
  1075. XRING("see invisible",    "engagement",    SEE_INVIS,    150, 0, METAL, HI_METAL),
  1076. XRING("protection from shape changers", "shining", PROT_FROM_SHAPE_CHANGERS,
  1077. X                            100, 0, METAL, HI_METAL|BRIGHT),
  1078. X#undef RING
  1079. X
  1080. X/* gems ************************************************************/
  1081. X#define GEM(name,desc,prob,wt,gval,glass, color) \
  1082. X        { name, desc, NULL, 0,1,0,0,glass, 0,\
  1083. X        GEM_SYM, prob, 0, wt, gval, 3, 3, WP_SLING, C(color)}
  1084. XGEM("dilithium crystal", "white",     3, 1, 4500, MINERAL, WHITE),
  1085. XGEM("diamond", "white",          4, 1, 4000, MINERAL, WHITE),
  1086. XGEM("ruby", "red",             5, 1, 3500, MINERAL, RED),
  1087. XGEM("sapphire", "blue",          6, 1, 3000, MINERAL, BLUE),
  1088. XGEM("emerald", "green",          7, 1, 2500, MINERAL, GREEN),
  1089. XGEM("turquoise", "green",         8, 1, 2000, MINERAL, GREEN),
  1090. XGEM("aquamarine", "green",        10, 1, 1500, MINERAL, GREEN),
  1091. XGEM("amber", "yellowish brown",     11, 1, 1000, MINERAL, BROWN),
  1092. XGEM("topaz", "yellowish brown",     13, 1,    900, MINERAL, BROWN),
  1093. XGEM("opal", "white",            15, 1,    800, MINERAL, WHITE),
  1094. XGEM("garnet", "red",            17, 1,    700, MINERAL, RED),
  1095. XGEM("amethyst", "violet",        19, 1,  600, MINERAL, MAGENTA),
  1096. XGEM("jasper", "red",            21, 1,    500, MINERAL, RED),
  1097. XGEM("fluorite", "violet",        22, 1,    400, MINERAL, MAGENTA),
  1098. XGEM("jade", "green",            23, 1,    300, MINERAL, GREEN),
  1099. XGEM("worthless piece of white glass", "white",    131, 1, 0, GLASS, WHITE),
  1100. XGEM("worthless piece of blue glass", "blue",    131, 1, 0, GLASS, BLUE),
  1101. XGEM("worthless piece of red glass", "red",    131, 1, 0, GLASS, RED),
  1102. XGEM("worthless piece of yellowish brown glass", "yellowish brown",
  1103. X                        131, 1, 0, GLASS, BROWN),
  1104. XGEM("worthless piece of green glass", "green",    131, 1, 0, GLASS, GREEN),
  1105. XGEM("worthless piece of violet glass", "violet",131, 1, 0, GLASS, MAGENTA),
  1106. XGEM("luckstone", "gray",         10, 1,  60, MINERAL, GRAY),
  1107. XGEM("loadstone", "gray",         10, 50,  1, MINERAL, GRAY),
  1108. X{ "rock", NULL, NULL, 1,1,0,0,MINERAL, 0,
  1109. X        GEM_SYM, 10, 0, 1, 0, 3, 3, WP_SLING, C(HI_MINERAL)},
  1110. X#undef GEM
  1111. X
  1112. X    { NULL, NULL, NULL, 0,0,0,0,0, 0, ILLOBJ_SYM, 0, 0, 0, 0, 0, 0, 0, C(0) }
  1113. X};
  1114. X
  1115. X#undef C
  1116. END_OF_FILE
  1117. if test 31115 -ne `wc -c <'src/objects.c'`; then
  1118.     echo shar: \"'src/objects.c'\" unpacked with wrong size!
  1119. fi
  1120. # end of 'src/objects.c'
  1121. echo shar: End of archive 9 \(of 11\).
  1122. cp /dev/null ark9isdone
  1123. MISSING=""
  1124. for I in 1 2 3 4 5 6 7 8 9 10 11 ; do
  1125.     if test ! -f ark${I}isdone ; then
  1126.     MISSING="${MISSING} ${I}"
  1127.     fi
  1128. done
  1129. if test "${MISSING}" = "" ; then
  1130.     echo You have unpacked all 11 archives.
  1131.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1132. else
  1133.     echo You still need to unpack the following archives:
  1134.     echo "        " ${MISSING}
  1135. fi
  1136. ##  End of shell archive.
  1137. exit 0
  1138.